/***********************************************************************
 * Dao Interface :  SysUserDao.java
 * Author:  Bill Vison
 * Purpose: Defines the Interface SysUserDao
 ***********************************************************************/
package org.vsg.security.model.persistence;

import java.util.Collection;
import java.util.Iterator;
import java.util.Vector;

import org.vsg.common.pagination.Pagination;
import org.vsg.common.pagination.PaginationException;
import org.vsg.common.pagination.datatrans.PaginationProvider;
import org.springframework.dao.DataAccessException;
import java.io.Serializable;
import org.vsg.security.model.domain.SysUser;


public interface SysUserDao {

	/**
	 * @param sysUser
	 * @exception DataAccessException
	 */
	public void save(SysUser sysUser) throws DataAccessException;


	/**
	 * 
	 * @param allSysUser
	 * @throws DataAccessException
	 */
	public void saveAll(Collection<SysUser> allSysUser) throws DataAccessException;


	/**
	 * @param sysUser
	 * @exception DataAccessException
	 */   
	public void update(SysUser sysUser) throws DataAccessException;
	
	/**
	 * @param pk -- primary key for loading entity
	 * @exception DataAccessException
	 */   
	public SysUser load(Serializable pk) throws DataAccessException;
	
	
	/**
	 * @param sysUser
	 * @exception DataAccessException
	 */   
	public void delete(SysUser sysUser) throws DataAccessException;

	/**
	 * 
	 * @param all
	 * @throws DataAccessException
	 */
	public void deleteAll(Collection<SysUser> all) throws DataAccessException;
	
   	/** 
   	 * @param provider
   	 * @exception DataAccessException
   	 * @exception PaginationException
   	 */
   	public Pagination pageSysUser(PaginationProvider provider) throws DataAccessException, PaginationException;
   
   	/** 
   	 * @param provider
     * @exception DataAccessException
     * @exception PaginationException
     *
     */
   	public Pagination pageSysUserByAll(PaginationProvider provider) throws DataAccessException, PaginationException;
	
   	/**
   	 * 
   	 * @return
   	 * @throws DataAccessException
   	 */
	public Collection<SysUser> findByAll() throws DataAccessException;
	
	
	public SysUser findSingleByName(String name) throws DataAccessException;
	

}	